---
title: Case Cost
summary: Track legal case costs including payee, service type/dates, billing amounts, hours, authorization, and cancellation.
status: draft
owner: <owner>
last_reviewed: 2026-08-21
---

# Case Cost

Case Cost (`frmCaseCost.aspx`) tracks legal case costs including payee, service type and dates, billing amounts, hours, authorization, and cancellation, with a provider-lookup popup for payee selection.

## Entry conditions
- Menu navigation from any screen while a case is in context.

## Fields

| Field | Control type | Purpose | Validation |
| --- | --- | --- | --- |
| `ddlCases` | DropDownList | Case selector | — |
| `dgCostsHistory` | ig:WebDataGrid | Cost history grid with footer totals (amount billed, amount paid, hours billed) | — |
| `txtProviderLocation` | TextBox | Provider location ID input | Numeric, 1-7 digits, must exist in provider database |
| `imbProvider` | Image | Provider search popup trigger | — |
| `lblPayeeName` | Label | Payee firm name | — |
| `ddlPayeeList` | DropDownList | Payee person selector | — |
| `meFromDate` / `meThruDate` | igtxt:WebDateTimeEdit | Service date range | — |
| `serviceType` | DropDownList | Type of service | — |
| `prepay` | CheckBox | Prepayment flag | — |
| `amtBilled` / `amtPaid` / `amtPerHour` | igtxt:WebNumericEdit | Amount fields | — |
| `hoursBilled` | igtxt:WebNumericEdit | Hours billed | — |
| `authorizedList` | DropDownList | Authorized-by attorney | — |
| `meAuthDate` | igtxt:WebDateTimeEdit | Authorization date | — |
| `cancelledBy` | DropDownList | Cancelled-by code | — |

## Operations

| Operation | Trigger | Description |
| --- | --- | --- |
| Save | Toolbar Save | Validates via ObjectBindManager, saves, clears detail section |
| Insert | Toolbar Insert | Shows detail panel for new cost entry |
| Delete | Toolbar Delete | Removes selected cost |
| Select cost row | `dgCostsHistory.RowSelectionChanged` | Loads the selected cost into the detail edit panel and looks up the provider |
| Look up provider | `txtProviderLocation.TextChanged` (AutoPostBack, `HandleProviderLocationChange`) | Looks up provider, loads payee person list |
| Compute totals | `dgCostsHistory.DataBound` | Calculates footer totals |

## Business rules

| Rule ID | Rule | Enforcement | Source |
| --- | --- | --- | --- |
| [BR-CLM-LGL-001](../libraries/saif-business-claim-legal/business-rules.md#br-clm-lgl-001-case-cost-date-ranges-must-be-valid) | Case cost date ranges must be valid | `clsCaseCost` validation | [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/overview.md) |
| [BR-CLM-LGL-002](../libraries/saif-business-claim-legal/business-rules.md#br-clm-lgl-002-case-cost-entry-requires-a-payee) | A case cost entry requires a payee | `clsCaseCost` validation | [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/overview.md) |
| [BR-CLM-LGL-003](../libraries/saif-business-claim-legal/business-rules.md#br-clm-lgl-003-case-cost-entry-requires-service-code%2C-authorizer%2C-and-canceller) | A case cost entry requires service code, authorizer, and canceller | `clsCaseCost` validation | [SAIF.Business.Claim.Legal](../libraries/saif-business-claim-legal/overview.md) |
| [BR-SCR-019](../application/business-rules.md#br-scr-019-case-cost-provider-location-must-be-numeric-and-resolve-to-a-provider) | Provider location must be numeric (1-7 digits) and must exist in the provider database | `frmCaseCost.aspx.vb` | `Legal/frmCaseCost.aspx.vb:123-138` |
| [BR-SCR-020](../application/business-rules.md#br-scr-020-case-cost-row-switch-is-blocked-until-current-edits-are-saved) | A dirty check runs before switching rows: "Changes must be saved before switching rows" | `frmCaseCost.aspx.vb` | `Legal/frmCaseCost.aspx.vb:191` |
| [BR-SCR-021](../application/business-rules.md#br-scr-021-case-cost-case-switch-warns-when-edits-are-dirty) | A dirty check runs before switching cases | `frmCaseCost.aspx.vb` | `Legal/frmCaseCost.aspx.vb:209` |

## Infragistics components

| Control ID | Control type | SAIF wrapper | Infragistics base | Purpose |
| --- | --- | --- | --- | --- |
| `dgCostsHistory` | `ig:WebDataGrid` | — | `Infragistics.Web.UI.GridControls.WebDataGrid` (v11.1) | Cost-history grid with footer totals, `Selection` with AutoPostBack |
| (grid) | `igui:WebResizingExtender` | — | Infragistics35.WebUI.WebResizingExtender.v11.1 | Allows resizing the cost-history grid |
| `amtBilled`, `amtPaid`, `amtPerHour`, `hoursBilled` | `igtxt:WebNumericEdit` | — | Infragistics35.WebUI.WebDataInput.v11.1 | Numeric amount/hours fields (×4) |
| `meFromDate`, `meThruDate`, `meAuthDate` | `igtxt:WebDateTimeEdit` | — | Infragistics35.WebUI.WebDataInput.v11.1 | Date entry fields (×3) |
| (form) | `cc2:clsObjectBindManager` | `clsObjectBindManager` | Infragistics35 binding (via SAIF.Presentation.Web.Binding.Infragistics111) | Two-way data binding |

## Navigation

| Target | Trigger | Parameters |
| --- | --- | --- |
| Provider search popup (cross-app, shared) | `imbProvider` click → client-side `doSelectProvPopup()` | Returns selected provider location ID |
| All screens | `SAIFMenu` side menu | Existing case/claim context |

## Sources
- `Legal/frmCaseCost.aspx`
- `Legal/frmCaseCost.aspx.vb`
